import config from '@/config.js'
import {
	getStorage
} from '@/util/auth.js';
import Vue from 'vue'
import { Encrypt, Decrypt } from '@/js_sdk/cainiao-crypto/cainiao-crypto.js'
// 判断字符串是否包含中文
function hasChinese(str) {
    return /[\u4E00-\u9FA5]+/g.test(str)
}
export default function(parameter) {

	parameter.header = {};
	const token = getStorage('token');
	if (token) {
		parameter.header['token'] = token;
	}
	
	const Authorization=getStorage('authori')
	if (Authorization) {
		parameter.header['authori-zation'] = Authorization;
	}
	const area = getStorage('area');
	if (area) {
		parameter.header['addressId'] = area.value;
	}
	parameter.url = config.wqUrl + parameter.url
	return new Promise((resolve, reject) => {
		uni.request({
			...parameter,
			success(e) {
				uni.hideLoading().then(() => {
					if (e.statusCode != 200) {
						uni.showToast({
							title: '请求失败',
							icon: 'none'
						})
						reject();
					} else {
						const response = e.data;
						switch (response.code) {
							case 200:
							//本地调试时，可以删除此方法
								if(response.data)
								{
									let deStr;
									const mi=Decrypt(response.data);
									  try {
									    deStr = JSON.parse(mi);
									  } catch (error) {
					
									    deStr = mi; // 或者其他默认值
									  }
									resolve(deStr);
									break;
								}
								resolve(response.data);
								break;
							case 405:
								uni.showToast({
									title: '登录信息已过期，请重新登录',
									icon: 'none',
									duration: 2000,
									success: () => {
										Vue.prototype.$store.commit(
											'user/SET_TOKEN', null)
										Vue.prototype.$store.commit('user/SET_USER',
											null)
										uni.$TUIKit && uni.$TUIKit.logout()
										setTimeout(() => {
											uni.reLaunch({
												url: '/page_other/login/select'
											})
										}, 2000)
									}
								})

								break;
							case 403:
								uni.showToast({
									title: '暂无权限',
									icon: 'none',
									duration: 2000,
									success() {
										setTimeout(() => {
											reject();
										}, 2000)
									}
								})
								break;
							case 500:
								uni.showToast({
									title: response.msg,
									icon: 'none',
									duration: 2000,
									success() {
										setTimeout(() => {
											reject();
										}, 2000)
									}
								})
								break;
							default:
								uni.showToast({
									title: response.msg,
									icon: 'none',
									duration: 2000,
									success() {
										setTimeout(() => {
											reject();
										}, 2000)
									}
								})
								break;
						}
					}
				})
			},
			
			fail() {
				uni.hideLoading().then(() => {
					uni.showToast({
						title: '请求失败',
						icon: 'none',
						duration: 2000,
						success() {
							setTimeout(() => {
								reject();
							}, 2000)
						}
					})
				})
			}
		})
	})
}